package com.cn.yang.service.impl;

import com.cn.yang.dao.UserDao;
import com.cn.yang.dao.impl.UserDaoImpl;
import com.cn.yang.model.UserModel;
import com.cn.yang.service.UserService;
import com.cn.yang.util.PageUtil;
import redis.clients.jedis.Jedis;

import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;


public class UserServiceImpl implements UserService {
    
    //用户注册
    @Override
    public int registerUser(UserModel userModel) {
        UserDao userDao = new UserDaoImpl();
        int result = userDao.registerUser(userModel);
        //插入成功返回1
        if (result == 1) {
            return 1;
        } else if (result == -1) {
            return -1;
        }
        return result;
    }
    
    // 用户登录
    @Override
    public int login(UserModel userModel) {
        UserDao userDao = new UserDaoImpl();
        //-1 账号不存在 1 登录成功 2 密码不正确////验证码错误 返回3
        if (userModel.getCode().equals(userModel.getSessionCode())) {
            int result = userDao.login(userModel);
            return result;
        } else {
            return 3;
        }
        
    }
    
    // //查询所有的用户信息
    // @Override
    // public List<UserModel> findAllUser(UserModel userModel) {
    //     UserDao userDao = new UserDaoImpl();
    //     List<UserModel> list = new ArrayList<>();
    //     Jedis jedis = new Jedis();
    //     long length = jedis.llen("user_id");
    //     if (length > 0) {
    //         //从redis里面取值
    //         List<String> user_id = jedis.lrange("user_id", 0, -1);
    //         List<String> user_username = jedis.lrange("user_username",0,-1);
    //         List<String> user_password = jedis.lrange("user_username",0,-1);
    //         List<String> user_phone = jedis.lrange("user_username",0,-1);
    //         List<String> user_sex = jedis.lrange("user_username",0,-1);
    //         List<String> user_birthday = jedis.lrange("user_birthday",0,-1);
    //         List<String> user_hobby = jedis.lrange("user_hobby",0,-1);
    //         List<String> user_instroduce = jedis.lrange("user_instroduce",0,-1);
    //         List<String> user_creattime = jedis.lrange("user_creattime",0,-1);
    //         List<String> user_updatetome = jedis.lrange("user_updatetome",0,-1);
    //         for (int i =0;i<length;i++){
    //             UserModel model = new UserModel();
    //             model.setId(Integer.parseInt(user_id.get(i)));
    //             model.setUsername(user_username.get(i));
    //             model.setPassword(user_password.get(i));
    //             model.setPhone(user_phone.get(i));
    //             model.setSex(user_sex.get(i));
    //             model.setBirthday(user_birthday.get(i));
    //             model.setHobby(user_hobby.get(i));
    //             model.setIntroduce(user_instroduce.get(i));
    //             model.setCreatetime(user_creattime.get(i));
    //             model.setUpdatetime(user_updatetome.get(i));
    //             list.add(model);
    //         }
    //     } else {
    //         //从数据库取值并赋给redis。
    //         list = userDao.findAllUser(userModel);
    //         for (int i = 0; i < list.size(); i++) {
    //             jedis.rpush("user_id",list.get(i).getId().toString());
    //         }
    //     }
    //     return list;
    // }
    
    //删除一个用户 通过Id
    @Override
    public int deleteById(Integer id) {
        UserDao userDao = new UserDaoImpl();
        //i删除成功 返回 1 ，删除失败返回 0
        return userDao.deleteById(id);
    }
    
    //查询一个 通过ID
    @Override
    public UserModel selectById(Integer id) {
        UserDao userDao = new UserDaoImpl();
        UserModel userModel = userDao.findIdUser(id);
        return userModel;
    }
    
    //更新一个 通过ID
    @Override
    public int updateById(UserModel userModel) {
        UserDao userDao = new UserDaoImpl();
        int result = userDao.updateUser(userModel);
        if (result==1){
            Jedis jedis = new Jedis();
            jedis.del("user_id");
        }
        return result;
    }
    
    // 查询一些  模糊查询
    @Override
    public List<UserModel> findSomeUser(UserModel userModel) {
        UserDao userDao = new UserDaoImpl();
        List<UserModel> list = userDao.findSomeUser(userModel);
        // Jedis jedis = new Jedis();
        // long length = jedis.llen("user_id");
        // if (length > 0) {
        //     //从redis里面取值
        //     List<String> user_id = jedis.lrange("user_id", 0, -1);
        //     List<String> user_username = jedis.lrange("user_username", 0, -1);
        //     // List<String> user_password = jedis.lrange("user_password", 0, -1);
        //     List<String> user_phone = jedis.lrange("user_phone", 0, -1);
        //     List<String> user_sex = jedis.lrange("user_sex", 0, -1);
        //     List<String> user_birthday = jedis.lrange("user_birthday", 0, -1);
        //     List<String> user_hobby = jedis.lrange("user_hobby", 0, -1);
        //     List<String> user_instroduce = jedis.lrange("user_instroduce", 0, -1);
        //     List<String> user_creattime = jedis.lrange("user_creattime", 0, -1);
        //     List<String> user_updatetome = jedis.lrange("user_updatetome", 0, -1);
        //     for (int i = 0; i < length; i++) {
        //         UserModel model = new UserModel();
        //         model.setId(Integer.parseInt(user_id.get(i)));
        //         model.setUsername(user_username.get(i));
        //         // model.setPassword(user_password.get(i));
        //         model.setPhone(user_phone.get(i));
        //         model.setSex(user_sex.get(i));
        //         model.setBirthday(user_birthday.get(i));
        //         model.setHobby(user_hobby.get(i));
        //         model.setIntroduce(user_instroduce.get(i));
        //         model.setCreatetime(user_creattime.get(i));
        //         model.setUpdatetime(user_updatetome.get(i));
        //         list.add(model);
        //     }
        //
        // } else {
        //     //从数据库取值并赋给redis。
        //     list = userDao.findSomeUser(userModel);
        //     for (int i = 0; i < list.size(); i++) {
        //         jedis.rpush("user_id", list.get(i).getId().toString());
        //         jedis.rpush("user_username", list.get(i).getUsername());
        //         // jedis.rpush("user_password",list.get(i).getPassword());
        //         jedis.rpush("user_phone", list.get(i).getPhone());
        //         jedis.rpush("user_sex", list.get(i).getSex());
        //         jedis.rpush("user_birthday", list.get(i).getBirthday());
        //         jedis.rpush("user_hobby", list.get(i).getHobby());
        //         jedis.rpush("user_instroduce", list.get(i).getIntroduce());
        //         jedis.rpush("user_creattime", list.get(i).getCreatetime());
        //         jedis.rpush("user_updatetome", list.get(i).getUpdatetime());
        //     }
        // }
        return list;
    }
    
    //总计用户多少
    @Override
    public int countUser() {
        UserDao userDao = new UserDaoImpl();
        int result = 0;
        Jedis jedis = new Jedis();
        String countUser = jedis.get("countUser");
        if (countUser != null) {
            result = Integer.parseInt(countUser);
        } else {
            result = userDao.countUser();
            jedis.set("countUser", String.valueOf(result));
        }
        return result;
    }
}
